<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>vue常用指令</title>
</head>

<body>
  <div id="app">
    <!-- v-text/v-html -->
    <!-- v-text/v-html后边可以渲染数字，但是不能写字母=>字母会被当做data中设置的数据项，找不到报错 -->
    <p v-text="1213"></p>
    <p>hi 2323</p>
    <h1>dfdf34</h1>
    <h1>{{`sdfd3`}}</h1>
    <p v-text="`hi 2323`"></p>
    <p v-text="'hi 2323'"></p>
    <p>{{contentStr}}</p>
    <p v-text="contentStr">1231vdgdfg</p>
    <p v-text="bool?'1':'2'"></p>
    <p v-text="bool?contentStr:'2'"></p>
    <div v-text="contentHtml"></div>
    <hr />
    <div v-html="123"></div>
    <div v-html="contentHtml">1231vdgdfg</div>
    <div v-html="contentHtml2"></div>
  </div>
  <!-- 开发版本 -->
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
  <script>
    //  1. v-text/v-html
    //   作用：响应式的控制dom元素内容的变化
    //   语法：
    //   <div v-text="求值结果为纯文本字符串的js表达式（data中的某个响应式属性）"></div>
    //   <div v-html="求值结果为含有标签内容的字符串js表达式（data中的某个响应式属性）"></div>

    //   v-text 只能渲染纯文本
    //   v-html 渲染富文本 （识别标签）

    //   注意事项：
    //     1.使用v-html的时候注意安全攻击 确保渲染的内容是可控的   （做过滤处理 将可能造成安全问题的标签属性过滤掉）
    //     2.v-text vs {{}}  只要使用了v-text指令 元素内部的内容完全交给v-text来控制 自定义内容不生效
    let abc = 1234
    const vm = new Vue({
      el: '#app',
      data: {
        contentStr: 'hi vue!',
        bool: true,
        contentHtml: '<h1>hi vue!{{bool}}</h1>',
        contentHtml2: `<div><h1 style="color:red">hi vue!</h1>
          <a href="javaScript:document.write()">执行js</a>
          <h2>${this.bool}</h2>
          <h3>${abc}</h3>
          </div>`
      }
    })
  </script>
</body>

</html>